package com.bdqn.design.proxy;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

/**
 * IntermediaryImpl 中介（接口式）
 *
 * @author LILIBO
 * @since 2025/1/8
 */
public class IntermediaryImpl implements Buyer {

    /**
     * 日志
     */
    private final Logger log = LogManager.getLogger(IntermediaryImpl.class);

    /**
     * 服务目标（真正想买房的人）
     */
    private Buyer target;

    /**
     * 构造方法，将目标传入
     *
     * @param target
     */
    public IntermediaryImpl(Buyer target) {
        this.target = target;
    }

    /**
     * 看房
     *
     * @return
     */
    @Override
    public String havealook() {
        // 【前置增强】在客户看房之前做一些准备
        before();

        // 让服务目标（真实买房者）实地考察
        String idea = target.havealook();

        // 【后置增强】在客户看房之后做一些整理
        after();

        return idea;
    }

    /**
     * 前置增强
     */
    private void before() {
        log.info("【前置增强】在客户看房之前做一些准备");
        log.info("① 前期准备");
        log.info("② 查找房源");
        log.info("③ 和卖家沟通时间");
    }

    /**
     * 后置增强
     */
    private void after() {
        log.info("【后置增强】在客户看房之后做一些整理");
        log.info("④ 后期跟踪");
        log.info("⑤ 和买家沟通意见");
    }

}
